package com.hello.auth.service;

import com.hello.common.core.constant.CacheConstants;
import com.hello.common.core.constant.Constants;
import com.hello.common.core.constant.SecurityConstants;
import com.hello.common.core.constant.UserConstants;
import com.hello.common.core.domain.R;
import com.hello.common.core.enums.UserStatus;
import com.hello.common.core.exception.ServiceException;
import com.hello.common.core.text.Convert;
import com.hello.common.core.utils.StringUtils;
import com.hello.common.core.utils.ip.IpUtils;
import com.hello.common.redis.service.RedisService;
import com.hello.common.security.utils.SecurityUtils;
import com.hello.system.api.RemoteUserService;
import com.hello.system.api.dto.SysUserDTO;
import com.hello.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 登录校验方法
 * 
 * @author hello
 */
public interface SysLoginService {
    /**
     * 登录
     */
    public LoginUser login(String username, String password);

    /**
     * 微信登录
     * 
     * @param code 微信临时登录凭证
     * @return 结果
     */
    public LoginUser wxLogin(String code);

    /**
     * 退出登录
     */
    public void logout(String loginName);

    /**
     * 注册
     */
    public void register(String username, String password);

    /**
     * 获取微信OpenID
     *
     * @param code 微信临时登录凭证
     * @return 包含openid和sessionKey的Map
     */
    public Map<String, Object> getWxOpenid(String code);

    /**
     * 绑定微信openid到用户
     *
     * @param username 用户名
     * @param openid 微信openid
     * @return 绑定结果
     */
    public R<Boolean> bindWxOpenid(String username, String openid);
}